import { Readable } from "stream"
import { CDNClientConfig } from "./CDNConfigs"

export interface CDNClient {
	/**
	 * 传入配置
	 * @param config cdn配置
	 */
	setConfig(config: CDNClientConfig): void
	/**
	 * 做一些初始化
	 */
	init(): CDNClient
	/**
	* 上传单个文件
	* @param filepath 要上传的本地文件路径
	* @param key 对应的cdn存储key
	* @param readFast 历史遗留，暂且保留
	*/
	uploadFile(filepath: string, key: string, readFast: boolean): Promise<string>
	/**
	* 上传单个文件
	* @param key 对应的cdn存储key
	* @param data 要上传的文件内容
	* @param readFast 历史遗留，暂且保留
	*/
	uploadData(key: string, data: string | Buffer, readFast: boolean): Promise<string>
	/**
	* 下载文件
	* @param key
	*/
	fetchFile(key: string): Promise<Readable>
	/**
	* key对应存储对象是否存在
	* @param key
	*/
	isExistObject(key: string): Promise<boolean>
	/**
	* 做一些销毁行为
	*/
	destroy(): Promise<boolean>
}
